// 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作（push、pop、peek、empty）：

// 执行用时：
// 0 ms
// , 在所有 C++ 提交中击败了
// 100.00%
// 的用户
// 内存消耗：
// 6.9 MB
// , 在所有 C++ 提交中击败了
// 5.68%
// 的用户

// 实现 MyQueue 类：
#include<bits/stdc++.h>
#include<stack>
using namespace std;

class MyQueue {
public:
    /** Initialize your data structure here. */
    // main stack
    stack<int> sta1;
    // other stack
    stack<int> sta2;
    MyQueue() {
    }
    
    /** Push element x to the back of queue. */
    void push(int x) {
    	sta1.push(x);
    }
    
    /** Removes the element from in front of queue and returns that element. */
    int pop() {
    	while(sta1.size()!= 1){
    		int temp = sta1.top();
    		sta1.pop();
    		sta2.push(temp);
    	}
    	int res = sta1.top();
    	sta1.pop();
    	while(!sta2.empty()){
    		int temp = sta2.top();
    		sta2.pop();
    		sta1.push(temp);
    	}
    	return res;
    }
    
    /** Get the front element. */
    int peek() {
    	while(sta1.size()!= 1){
    		int temp = sta1.top();
    		sta1.pop();
    		sta2.push(temp);
    	}
    	int res = sta1.top();
    	while(!sta2.empty()){
    		int temp = sta2.top();
    		sta2.pop();
    		sta1.push(temp);
    	}
    	return res;
    }
    
    /** Returns whether the queue is empty. */
    bool empty() {
    	if(sta1.empty()){
    		return true;
    	}
    	return false;
    }
};

